# -*- coding: UTF-8 -*-
'''
@Project ：pythonProject 
@File    ：functionDemo2.py
@Author  ：siwei
@Date    ：2023/10/31 23:02 
@other   ：str.print---->print(str)
'''


# 函数参数类型
# 1.位置参数:是指调用时的参数个数和顺序必须与定义的参数个数和顺序相同
def happy_birthday(name, age):
    print(f'祝' + name + '生日快乐')
    print(str(age) + '岁生日快乐')


happy_birthday('夏思维', 26)  # 参数个数相同,第一个参数必需是str类型
# happy_birthday(26,'夏思维')    #TypeError: can only concatenate str (not "int") to str

print('-' * 20)


# 2.关键字参数:是在函数调用时,使用"形参名称=值"的方式进行传参,传递参数顺序可以与定义时参数的顺序不同
def happy_birthday2(name, age):
    print(f'祝' + name + '生日快乐')
    print(str(age) + '岁生日快乐')


happy_birthday2(age=26, name='夏思维')  # 使用"形参名称=值"的方式,顺序可以不同
happy_birthday2(name='夏思维', age=26)
# happy_birthday2(nam='夏思维',age=26)       实参的名称必须与形参相同,TypeError: happy_birthday2() got an unexpected keyword argument 'nam'

# 一个函数中既可以使用位置传参,也可以使用关键字传参,但需要位置参数在前,关键字参数在后
happy_birthday2('夏思维', age=26)  # name使用位置传参,age使用关键字传参
happy_birthday2(26, name='夏思维')  # 但需要位置参数在前,关键字参数在后
